<%@ page language="java" contentType="text/html; charset=utf-8"
	pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>翻版规则</title>
<link rel="stylesheet" type="text/css"
	href="../ext/resources/css/ext-all.css"></link>
<link rel="stylesheet" type="text/css" href="../ext/resources/css/xtheme-slate.css"></link>
<script src="../ext/adapter/ext/ext-base.js"></script>
<script src="../ext/ext-all.js"></script>
<script src="../ext/src/locale/ext-lang-zh_CN.js"></script>
<script>
	//Ext.BLANK_IMAGE_URL = '../ext/ext-3.2.1/resources/images/default/s.gif';
	Ext.onReady(function() {
		Ext.Ajax.on('requestcomplete',checkUserSessionStatus, this);      
		function checkUserSessionStatus(conn,response,options){      
		    if(response.getResponseHeader('sessionstatus')){      
		    	parent.location.href='/xdj/index.jsp';   
		    }      
		}  
				Ext.QuickTips.init();//提示错误信息的，要想提示中文的必须开
				var treeloader = new Ext.tree.TreeLoader({ // dataUrl : 'tree.jsp'//这里可以不需要指定URL，在加载前事件响应里面设置 	
				});
				var rootnode = new Ext.tree.AsyncTreeNode({ // 异步加载根节点 
					id : '2',
					text : '大坝电厂',
					cls : 'folder'
				});
				var thenode = rootnode;
				var result ;
				var store2 ;
				var gridPanel2 ;
				var tree = new Ext.tree.TreePanel(
						{
							el : 'tree',// 将树形添加到一个指定的div中,非常重要！  
							border : false,
							region : 'west',
							//title : '功能菜单',  
							lines : false, //线段
							width : 350,
							height : 900,
							split : true,
							//autoHeight : true,  
							frame : true,// 美化界面    
							enableDD : false,// 是否支持拖拽效果  
							containerScroll : true,// 是否支持滚动条  
							rootVisible : true, // 是否隐藏根节点,很多情况下，我们选择隐藏根节点增加美观性  
							animate : true, // 动画效果  
							root : rootnode,
							loader : treeloader,
							listeners : {
								'beforeload' : function(node) {
									treeloader.dataUrl = "depart_load?parentID=parentID_"
											+ node.id + "_EQ";
								},
								'click' : function(node) {
									thenode = node;
									requestAction(thenode) ;
								}
								
								
							}

						// 树加载  s
						});
				tree.render(); // 渲染树形 
				var cm = new Ext.grid.ColumnModel([ new Ext.grid.RowNumberer(),//自动增加序列号
				{
					header : '值次编号',
					dataIndex : 'classID',
					hidden : true
				}, {
					header : '值次名称',
					dataIndex : 'claName',
					width : 60
				}, {
					header : '起始时间',
					dataIndex : 'startTime',
					xtype : 'datecolumn',
					format : 'H:i:s',
					width : 110
				}, {
					header : '终止时间',
					dataIndex : 'endTime',
					xtype : 'datecolumn',
					format : 'H:i:s',
					width : 110
				} ]);
				var store = new Ext.data.JsonStore({
					fields : [ {
						name : 'classID'
					}, {
						name : 'claName'
					}, {
						name : 'startTime',
						type : Ext.data.Types.DATE,
						dateFormat : 'Y-m-d H:i:s'
					}, {
						name : 'endTime',
						type : Ext.data.Types.DATE,
						dateFormat : 'Y-m-d H:i:s'
					} ]

				});//存储前两项的定义的东西，将其连接起来

				var gridPanel = new Ext.grid.GridPanel({
					cm : cm,
					width : 320,
					height : 140,
					align : 'center',
					store : store,
					region : 'center',
					//store : store,
					// autoHeight:true,  //设置表格的高度 true为自动获取表格的大小
					renderTo : 'grid', //渲染容器
					enableColumnMove : false,//不可以使表格列移动
					enableColumnResize : false, //不可以改变列的宽度
					stripeRows : false, //True表示为显示行的分隔符
					loadMask : true, //会有一个Ext.LoadMask的遮罩效果
					trackMouseOver : true, //True表示为鼠标移动时高亮显示（默认为true）。
					enableDragDrop : true
				//viewConfig:{
				//forceFit:true //让没列自动填满表格，根据你设置的宽度按比例分配
				//}
				});

				function createGridPanel(result) {
					data = new addColumn();
					for(i=0;i<result.classes.length;i++){
						data.addColumns(result.classes[i]) ;
					}
					
					
					var comboBox = new Ext.form.ComboBox({
			                forceSelection: true,
			                store: new Ext.data.JsonStore({
			                	autoLoad : true,
			                    fields: ['dutyID', 'dutyName'],
			                    data : result.duty
			                }),
			                valueField:'dutyID',
			                displayField:'dutyName',
			                typeAhead: true,
			                mode: 'local',
			                triggerAction: 'all',
			                selectOnFocus:true,
			                allowBlank:false
					});
					
					var dutyrule = Ext.data.Record.create(eval('([' + data.names + '])')) ;
					var cm2 = new Ext.grid.ColumnModel(eval('([' + data.columns + '])'));
					store2 = new Ext.data.JsonStore({
						reader: new Ext.data.ArrayReader({id:0},dutyrule),  
						fields : eval('['+data.fields+']') 
					
					}) ;
					if(result.dutyRules!=null){
						store2.loadData(result.dutyRules,false) ;	
					}
					var d = document.getElementById('grid2'); 
					if(document.getElementById('duty_rule_panel')!=null){
						d.removeChild(document.getElementById('duty_rule_panel'));   
					}
					gridPanel2 = new Ext.grid.EditorGridPanel({
						//autoHeight:true,  //设置表格的高度 true为自动获取表格的大小
						id:'duty_rule_panel',
						clicksToEdit : 1, 
						renderTo : 'grid2',
						region : 'center',
						width : 340,
						height : 220,
						cm : cm2,
						store : store2,
						enableColumnMove : false,//不可以使表格列移动
						enableColumnResize : false, //不可以改变列的宽度
						stripeRows : false, //True表示为显示行的分隔符
						loadMask : true, //会有一个Ext.LoadMask的遮罩效果
						trackMouseOver : true, //True表示为鼠标移动时高亮显示（默认为true）。
						enableDragDrop : true
					//viewConfig:{
					//forceFit:true //让没列自动填满表格，根据你设置的宽度按比例分配
					//}
					});
				}

				var form = new Ext.form.FormPanel({
					
					renderTo : 'duty-rule',
					align : "center",
					frame : true,
					defaults : {
						align : "center"
					},
					labelAlign : "center",
					buttonAlign:'left',
					pageX : 100,
					//region:"center", 
					//bodyStyle:"body-align:center",
					//style:{
					//marginRight: 'auto',
					//marginLeft: 'auto'
					//},
					style : 'margin:0 auto',
					bodyStyle : 'center',
					height : 600,
					//width:700,
					layout : 'column',
					items : [ {
						layout : 'form',
						region : 'center',
						columnWidth : .62,
						buttons:[{
							text:'保存',disabled:true,id:'cSaveDutyRuleBox',
							handler:function(){
								var a = eval('['+data.names+']');
								var dutyrule = '[' ;
								for(j=0 ; j<store2.getCount() ; j++){
									var record = store2.getAt(j) ;
									for(i=1 ; i<a.length ; i++){
										if(dutyrule.length>1) {
											dutyrule +=',' ;
										}
										dutyrule += '{duRuOrder'+':'+record.get(a[0].name)
											+',classID:'+a[i].name
											+',dutyID:'+record.get(a[i].name)
											+',departmentID:'+thenode.id+'}';
											
									}
								}
								dutyrule += ']' ;
								var baseDate = '{baseDate:\''+Ext.getDom("baseDate").value+
									' 00:00:00'+
									'\',circleDays:'+Ext.getDom("cricleDays").value+
									',span:'+Ext.getDom("span").value+'}' ;
								Ext.Ajax.request({
									url:'dutyrule_saveDutyRule',
									success:function(response){
										var result = Ext.util.JSON.decode(response.responseText);
										if(result.success==true){
											
										}else{
											Ext.Msg.alert("提示","操作失败，请重试。") ;
										}
									},
									params:{
										departmentID : thenode.id ,
										baseDutyStr : baseDate,
										dutyRuleStr : dutyrule
									}
								});	
							}
						}],
						items : [ {
							name : 'baseDate',
							fieldLabel : '基准时间',
							xtype : 'datefield',
							format : 'Y-m-d',
							width : 200

						}, {
							name : 'cricleDays',
							fieldLabel : '交接时间',
							xtype : 'numberfield',
							allowBlank : false,
							blankText : '必须输入数字',
							width : 200
						}, {
							id:'sp',
							name : 'span',
							fieldLabel : '运转周期',
							xtype : 'numberfield',
							allowBlank : false,
							blankText : '必须输入数字',
							width : 200,
							listeners : {
							     'change' : function() {
							    	 createData(Ext.getCmp("sp").getValue()) ;
							     },
							     'invalid' : function(){
							    	 if(store2!=null){
							    		 store2.removeAll() ;
							    	 }
							     }
							}
						}, gridPanel
						]
					} ]
					
					

				});
				
				new Ext.Viewport({
					layout : 'border', // 使用border布局  
					border : false,
					items : [ {
						region : 'west',
						border : false,
						width : 200,
						items : [ tree ]
					}, {
						region : 'center',
						border : false,
						items : [ form ]
					} ],
					listeners:{
						'beforerender' : function(cmp) {
							// set role
							var store=new Ext.data.JsonStore({
								url: '../system/role_loadFunc?funcCode=ControlDutyRule',
								autoLoad : true,
								fields: ["functioncode"]
							});
							store.load({
							    callback: function(records, options, success){
							    	var i=0;
							    	for(; i<records.length; i++) {
							    		var id = records[i].get("functioncode");
							    		//alert('d'+Ext.getCmp('56').text);
							    		if(Ext.getCmp(id)!=null) {
							    			Ext.getCmp(id).setDisabled(false);
							    		}
							        }
							    },
							    scope: store
							});
						}
					}
				});

				  //声明函数变量
			    var data;
			    //动态添加列，这是关键代码
			    var addColumn = function()
			    {
			    	this.names = "{name: 'duRuOrder',mapping: 0}" ;
			    	this.fields = "{name:'duRuOrder'}" ;
			        this.columns = "{header:'天次',dataIndex:'duRuOrder',width:35,sortable:true}";       
			        var i = 1 ;
			        this.addColumns=function(obj)
			        {
			            if(this.columns.length > 0)
			            {                
			                this.columns += ',';
			            }            
			            if(this.names.length > 0) {
			            	this.names +=',' ;
			            }
			            if(this.fields.length>0) {
			            	this.fields += ',' ;
			            }
			            this.columns += '{header:"' + obj.claName+ 
			            	'",dataIndex:"' + obj.classID + 
			            	'",width:100,sortable:true,editor:comboBox}';
			            this.names += '{name:"'+obj.classID+'",mapping:'+ i++ +'}' ;
			            this.fields += '{name:"' + obj.classID + '"}';
			        };
			    };
			    
			    function createData(order) {
			    	var p = 0 ;
			    	var t = "" ;
			    	for(i=1 ; i<=order ; i++) {
			    		if(t.length>0){
			    			t+="," ;
			    		}
						t += "{duRuOrder:"+i ;
						for(j=0 ; j<result.classes.length ; j++){
							if(p==result.duty.length){
								p=0 ;
							}
							t+=",'"+result.classes[j].classID+"':"+result.duty[p].dutyID;
							p=p+1;
						}
						t+="}" ;
			    	}
			    	alert(t);
			    	store2.loadData(eval('['+ t +']'),false) ;
			    }
			    
				function requestAction(thenode){
					Ext.Ajax
					.request({
						url : 'dutyrule_loadDutyRule',
						success : function(response) {
							result = Ext.util.JSON
									.decode(response.responseText);
							if (result.success == true) {
								store.loadData(
										result.classes,
										false);
								if (result.baseDutyRule != null) {
									var d = result.baseDutyRule.baseDate;
									form
											.getForm()
											.setValues(
													{
														'baseDate' : Ext.util.Format
																.substr(
																		d,
																		0,
																		10),
														'cricleDays' : result.baseDutyRule.cricleDays,
														'span' : result.baseDutyRule.span
													});
								} else {
									form
											.getForm()
											.setValues(
													{
														'baseDate' : new Date()
																.format('Y-m-d'),
														'cricleDays' : '',
														'span' : ''
													});
								}
								createGridPanel(result) ;
							} else {
								Ext.Msg.alert("提示",
										"操作失败，请重试。");
							}
						},
						params : {
							departmentID : thenode.id
						}
					});
				} 			    
			});
	
</script>
</head>
<body>
	<div id="tree"></div>
	<div id="grid"></div>
	<div id="duty-rule"></div>
	<div id="grid2" style="position:absolute; left:600px; top:0px;"></div>
	<div id="test"></div>
</body>
</html>